package com.yhq.yhqproject.base.modules.base.appender;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
import com.yhq.yhqproject.base.common.utils.IdGen;
import com.yhq.yhqproject.base.common.utils.IpUtils;
import com.yhq.yhqproject.base.common.utils.SpringContextUtils;
import com.yhq.yhqproject.base.modules.base.entity.ErrorLog;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.MongoTemplate;

@Slf4j
public class MongoAppender extends UnsynchronizedAppenderBase<ILoggingEvent>
{
    @Override
    protected void append(ILoggingEvent e)
    {
        MongoTemplate mt = SpringContextUtils.getBean(MongoTemplate.class);
        ErrorLog m = new ErrorLog();
        m.setId(IdGen.get().nextSid());
        m.setClassName(e.getLoggerName());
        m.setCreateTime(e.getTimeStamp());
        m.setLevel(e.getLevel().toString());
        m.setThread(e.getThreadName());
        m.setMessage(e.getFormattedMessage());
        m.setServerIp(IpUtils.SERVER_IP);
        m.setServerName(IpUtils.SERVER_HOST_NAME);
        mt.insert(m);
    }
}
